package com.share.device.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.share.device.domain.CabinetType;
import com.share.device.mapper.CabinetTypeMapper;
import com.share.device.service.ICabinetTypeService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CabinetTypeServiceImpl extends ServiceImpl<CabinetTypeMapper, CabinetType> implements ICabinetTypeService {

    /**
     * 查询柜机类型列表
     */
    @Override
    public List<CabinetType> selectCabinetTypeList(CabinetType cabinetType) {
        // 创建MyBatis-Plus的Lambda查询包装器，用于构建SQL查询条件
        LambdaQueryWrapper<CabinetType> wrapper = new LambdaQueryWrapper<>();

        // 提取查询条件参数
        String name = cabinetType.getName();
        Integer totalSlots = cabinetType.getTotalSlots();
        String description = cabinetType.getDescription();
        String status = cabinetType.getStatus();

        // 动态构建查询条件：支持模糊匹配的名称查询
        if (StrUtil.isNotEmpty(name)) {
            wrapper.like(CabinetType::getName, name);
        }

        // 动态构建查询条件：精确匹配的总槽位数查询
        if (totalSlots != null) {
            wrapper.eq(CabinetType::getTotalSlots, totalSlots);
        }

        // 动态构建查询条件：精确匹配的描述查询
        if (StrUtil.isNotEmpty(description)) {
            wrapper.eq(CabinetType::getDescription, description);
        }

        // 动态构建查询条件：精确匹配的状态查询
        if (StrUtil.isNotEmpty(status)) {
            wrapper.eq(CabinetType::getStatus, status);
        }

        // 强制添加数据过滤条件：只查询未删除的记录（delFlag=0）
        // 此条件确保已删除的数据不会被查询出来
        wrapper.eq(CabinetType::getDelFlag, "0");

        // 执行数据库查询并返回结果列表
        return baseMapper.selectList(wrapper);
    }
}
